-- *****************************************************************
-- CISCO-CONFIG-COPY-MIB.my: MIB for copying a Cisco router's
-- config
--   
-- December 1997, Ramanathan R. Kavasseri
--   
-- Copyright (c) 2005, 1998, 2008 by cisco Systems Inc.
-- All rights reserved.
-- *****************************************************************
--   


CISCO-CONFIG-COPY-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    NOTIFICATION-TYPE,
    IpAddress,
    Unsigned32
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION,
    DisplayString,
    TimeStamp,
    RowStatus,
    TruthValue
        FROM SNMPv2-TC
    MODULE-COMPLIANCE,
    OBJECT-GROUP,
    NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    ciscoMgmt
        FROM CISCO-SMI
    InetAddressType,
    InetAddress
        FROM INET-ADDRESS-MIB
    FcNameIdOrZero
        FROM CISCO-ST-TC;


ciscoConfigCopyMIB MODULE-IDENTITY
    LAST-UPDATED    "200504060000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service

            Postal: 170 W. Tasman Drive
            San Jose, CA  95134
            USA

            Tel:    +1 800 553-NETS

            E-mail: cs-snmp@cisco.com"
    DESCRIPTION
        "This MIB facilitates writing of configuration files
        of an SNMP Agent running Cisco's IOS in the 
        following ways: to and from the net, copying running 
        configurations to startup configurations and 
        vice-versa, and copying a configuration
        (running or startup) to and from the local 
        IOS file system."
    REVISION        "200504060000Z"
    DESCRIPTION
        "Added new enumeration value fabricStartupConfig to
        ConfigFileType textual convention.
        Added new table ccCopyErrorTable.
        Added new enumeration values: systemNotReady and
        requestAborted to ConfigCopyFailCause."
    REVISION        "200403170000Z"
    DESCRIPTION
        "The object ccCopyServerAddress is deprecated since it
        supports only IPv4 address. Two new objects are
        defined ccCopyServerAddressType and
        ccCopyServerAddressRev1."
    REVISION        "200212170000Z"
    DESCRIPTION
        "Added a new enumeration value
        someConfigApplyFailed(7) to ConfigCopyFailCause TC."
    REVISION        "200205300000Z"
    DESCRIPTION
        "Added sftp protocol as an option for
        ConfigCopyProtocol."
    REVISION        "200205070000Z"
    DESCRIPTION
        "Added scp protocol as an option for
        ConfigCopyProtocol.
        Added unsupportedProtocol(6) as an option for the 
        ConfigCopyFailCause TC."
    REVISION        "200203280000Z"
    DESCRIPTION
        "Imported Unsigned32 from SNMPv2-SMI instead of
        CISCO-TC"
    ::= { ciscoMgmt 96 }



-- A config-copy operation is a request to copy a configuration
-- file of an SNMP Agent running Cisco's IOS in the following ways:
-- 1. to or from the net (via a protocol like tftp, ftp, rcp,
-- scp or sftp).
-- 2. copying running configurations to startup
-- configurations and vice-versa.
-- 3. copy a running or startup config to a file
-- to the local IOS file system and vice versa."
--   
-- The term "agent-config" will be used in this MIB to refer to
-- either the running config or the startup config. It will be
-- used as a short way of saying "either running config or the
-- startup config".

ConfigCopyProtocol ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "The protocol file transfer protocol that should be
        used to copy the configuration file over the 
        network. If the config file transfer is to occur 
        locally on the SNMP agent, the method of transfer 
        is left up to the implementation, and is not 
        restricted to the protocols below.

        tftp:   Transfer File Transfer Protocol 

        ftp:    File Transfer protocol

        rcp:    Remote Copy Protocol

        scp:    Secure Copy Protocol

        sftp:   Secure File Transfer Protocol"
    SYNTAX          INTEGER  {
                        tftp(1),
                        ftp(2),
                        rcp(3),
                        scp(4),
                        sftp(5)
                    }

ConfigCopyState ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "The state of a TFTP config-copy operation.
        The description of each state is given below:

        waiting:     only one config-copy request can run 
                     at any time. A newly activated 
                     config-copy request is placed in this 
                     state if another request has already 
                     been activated.

        running:     this state signifies that the 
                     config-copy request is running.

        successful:  the state when a config-copy request 
                     is successfully completed.

        failed:      the config-copy request was 
                     unsuccessful."
    SYNTAX          INTEGER  {
                        waiting(1),
                        running(2),
                        successful(3),
                        failed(4)
                    }

ConfigCopyFailCause ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "The reason a config-copy request failed.

        unknown:        very descriptive.

        badFileName:    check your file 
                        name/path/permissions.

        timeout:        the network may be overloaded, 
                        or the remote file server may not
                        be responding.

        noMem:          the Agent wasn't able to allocate 
                        memory for the config-copy 
                        operation.

        noConfig:       the agent-config selected as the 
                        source was non-existent.

        unsupportedProtocol:    the protocol is not 
                                supported by the agent.

        someConfigApplyFailed:  applying of some of the 
                                configuration commands 
                                failed.

        systemNotReady: system is not ready to copy.

        requestAborted: config copy operation aborted."
    SYNTAX          INTEGER  {
                        unknown(1),
                        badFileName(2),
                        timeout(3),
                        noMem(4),
                        noConfig(5),
                        unsupportedProtocol(6),
                        someConfigApplyFailed(7),
                        systemNotReady(8),
                        requestAborted(9)
                    }

ConfigFileType ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "The various types of files on which a config-copy
        operation can be performed.

        networkFile:       file on another network device, 
                           e.g. a file-server on the 
                           network.

        iosFile:           a file on the local agent, other
                           than startup or running config.

        startupConfig:     a startup config file.

        runningConfig:     a running config file.

        terminal:          a terminal (e.g. the console 
                           window) on which the config is 
                           to be displayed.

        fabricStartupConfig:   a file type which can be
                               used for a destination file;
                               when a running-config is to
                               copied to a destination of
                               this type, the file is copied
                               to the startup config on all
                               devices in the fabric. Such
                               a fabric could, for example,
                               be a Fibre Channel fabric,
                               or even a MAC-based fabric."
    SYNTAX          INTEGER  {
                        networkFile(1),
                        iosFile(2),
                        startupConfig(3),
                        runningConfig(4),
                        terminal(5),
                        fabricStartupConfig(6)
                    }
ciscoConfigCopyMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoConfigCopyMIB 1 }

ccCopy  OBJECT IDENTIFIER
    ::= { ciscoConfigCopyMIBObjects 1 }


ccCopyTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CcCopyEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of config-copy requests."
    ::= { ccCopy 1 }

ccCopyEntry OBJECT-TYPE
    SYNTAX          CcCopyEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A config-copy request.

        A management station wishing to create an entry 
        should first generate a random serial number to be
        used as the index to this sparse table. The station 
        should then create the associated instance of the
        row status and row index objects.  It must also, 
        either in the same or in successive PDUs, create an
        instance of ccCopySourceFileType and 
        ccCopyDestFileType.

        At least one of the file types defined in 
        ConfigFileType TC must be an agent-config file type
        (i.e. 'startupConfig' or 'runningConfig').
        If one of the file types is a 'networkFile', a valid
        ccCopyFileName and ccCopyServerAddressType and 
        ccCopyServerAddressRev1 or just ccCopyServerAddress
        must be created as well. If ccCopyServerAddress is
        created then ccCopyServerAddressRev1 will store the
        same IP address and ccCopyServerAddressType will 
        take the value 'ipv4'.

        For a file type of 'iosFile', only
        a valid ccCopyFileName needs to be created as an 
        extra parameter.

        It should also modify the default values for the 
        other configuration objects if the defaults are not
        appropriate.

        Once the appropriate instance of all the 
        configuration objects have been created, either by
        an explicit SNMP set request or by default, the row 
        status should be set to active to initiate the 
        request. Note that this entire procedure may be 
        initiated via a single set request which specifies
        a row status of createAndGo as well as
        specifies valid values for the non-defaulted 
        configuration objects.

        Once the config-copy request has been created 
        (i.e. the ccCopyEntryRowStatus has been made 
        active), the entry cannot be modified - the only 
        operation possible after this is to delete the row.

        Once the request completes, the management station 
        should retrieve the values of the status objects of 
        interest, and should then delete the entry.  In
        order to prevent old entries from clogging the 
        table, entries will be aged out, but an entry will 
        ever be deleted within 5 minutes of completing."
    INDEX           { ccCopyIndex } 
    ::= { ccCopyTable 1 }

CcCopyEntry ::= SEQUENCE {
        ccCopyIndex                    Unsigned32,
        ccCopyProtocol                 ConfigCopyProtocol,
        ccCopySourceFileType           ConfigFileType,
        ccCopyDestFileType             ConfigFileType,
        ccCopyServerAddress            IpAddress,
        ccCopyFileName                 DisplayString,
        ccCopyUserName                 DisplayString,
        ccCopyUserPassword             DisplayString,
        ccCopyNotificationOnCompletion TruthValue,
        ccCopyState                    ConfigCopyState,
        ccCopyTimeStarted              TimeStamp,
        ccCopyTimeCompleted            TimeStamp,
        ccCopyFailCause                ConfigCopyFailCause,
        ccCopyEntryRowStatus           RowStatus,
        ccCopyServerAddressType        InetAddressType,
        ccCopyServerAddressRev1        InetAddress
}

ccCopyIndex OBJECT-TYPE
    SYNTAX          Unsigned32 (1..2147483647 )
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Object which specifies a unique entry in the
        ccCopyTable.  A management station wishing
        to initiate a config-copy operation should use a
        random value for this object when creating
        or modifying an instance of a ccCopyEntry.
        The RowStatus semantics of the ccCopyEntryRowStatus
        object will prevent access conflicts." 
    ::= { ccCopyEntry 1 }

ccCopyProtocol OBJECT-TYPE
    SYNTAX          ConfigCopyProtocol
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The protocol to be used for any copy.

        If the copy operation occurs locally on the SNMP 
        agent (e.g. 'runningConfig' to 'startupConfig'),
        this object may be ignored by the implementation."
    DEFVAL          { tftp } 
    ::= { ccCopyEntry 2 }

ccCopySourceFileType OBJECT-TYPE
    SYNTAX          ConfigFileType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "Specifies the type of file to copy from. Either the
        ccCopySourceFileType or the ccCopyDestFileType 
        (or both) must be of type 'runningConfig' or 
        'startupConfig'. Also, the ccCopySourceFileType
        must be different from the ccCopyDestFileType.

        If the ccCopySourceFileType has the value of 
        'networkFile', the ccCopyServerAddress/
        ccCopyServerAddressRev1 and ccCopyServerAddressType
        and ccCopyFileName must also be created, and 3 
        objects together (ccCopySourceFileType,
        ccCopyServerAddressRev1, ccCopyFileName) will 
        uniquely identify the source file. If 
        ccCopyServerAddress is created then 
        ccCopyServerAddressRev1 will store the
        same IP address and ccCopyServerAddressType will 
        take the value 'ipv4'. 

        If the ccCopySourceFileType is 'iosFile', the 
        ccCopyFileName must also be created, and the 
        2 objects together (ccCopySourceFileType,
        ccCopyFileName) will uniquely identify the source 
        file." 
    ::= { ccCopyEntry 3 }

ccCopyDestFileType OBJECT-TYPE
    SYNTAX          ConfigFileType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "specifies the type of file to copy to. Either the
        ccCopySourceFileType or the ccCopyDestFileType 
        (or both) must be of type 'runningConfig' or 
        'startupConfig'. Also, the ccCopySourceFileType 
        must be different from the ccCopyDestFileType.

        If the ccCopyDestFileType has the value of 
        'networkFile', the 
        ccCopyServerAddress/ccCopyServerAddressType and
        ccCopyServerAddressRev1 and ccCopyFileName must
        also be created, and 3 objects together
        (ccCopyDestFileType, ccCopyServerAddressRev1,  
        ccCopyFileName) will uniquely identify the 
        destination file. If ccCopyServerAddress is created
        then ccCopyServerAddressRev1 will store the same IP
        address and ccCopyServerAddressType will take the 
        value 'ipv4'. 

        If the ccCopyDestFileType is 'iosFile', the 
        ccCopyFileName must also be created, and the 2
        objects together (ccCopyDestFileType, 
        ccCopyFileName) will uniquely identify the 
        destination file." 
    ::= { ccCopyEntry 4 }

ccCopyServerAddress OBJECT-TYPE
    SYNTAX          IpAddress
    MAX-ACCESS      read-create
    STATUS          deprecated
    DESCRIPTION
        "The IP address of the TFTP server from (or to)
        which to copy the configuration file. This object 
        must be created when either the 
        ccCopySourceFileType or ccCopyDestFileType has the
        value 'networkFile'. 
        Values of 0.0.0.0 or FF.FF.FF.FF for
        ccCopyServerAddress are not allowed.

        Since this object can just hold only IPv4 Transport
        type, it is deprecated and replaced by 
        ccCopyServerAddressRev1." 
    ::= { ccCopyEntry 5 }

ccCopyFileName OBJECT-TYPE
    SYNTAX          DisplayString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The file name (including the path, if applicable)
        of the file. This object must be created when either
        the ccCopySourceFileType or ccCopyDestFileType has
        the value 'networkFile' or 'iosFile'." 
    ::= { ccCopyEntry 6 }

ccCopyUserName OBJECT-TYPE
    SYNTAX          DisplayString (SIZE  (1..40))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "Remote username for copy via FTP, RCP, SFTP or
        SCP protocol.
        This object must be created when the ccCopyProtocol
        is 'rcp', 'scp', 'ftp', or 'sftp'.
        If the protocol is RCP, it will override the remote 
        username configured through the 
                rcmd remote-username <username>
        configuration command. 
        The remote username is sent as the server username 
        in an RCP command request sent by the system to a
        remote RCP server." 
    ::= { ccCopyEntry 7 }

ccCopyUserPassword OBJECT-TYPE
    SYNTAX          DisplayString (SIZE  (1..40))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "Password used by FTP, SFTP or SCP for copying a
        file to/from an FTP/SFTP/SCP server. This object 
        must be created when the ccCopyProtocol is FTP or
        SCP. 
        Reading it returns a zero-length string for security 
        reasons." 
    ::= { ccCopyEntry 8 }

ccCopyNotificationOnCompletion OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "Specifies whether or not a ccCopyCompletion
        notification should be issued on completion of the
        TFTP transfer. If such a notification is desired, 
        it is the responsibility of the management entity to
        ensure that the SNMP administrative model is 
        configured in such a way as to allow the 
        notification to be delivered."
    DEFVAL          { false } 
    ::= { ccCopyEntry 9 }

ccCopyState OBJECT-TYPE
    SYNTAX          ConfigCopyState
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Specifies the state of this config-copy request.
        This value of this object is instantiated only after 
        the row has been instantiated, i.e. after the 
        ccCopyEntryRowStatus has been made active." 
    ::= { ccCopyEntry 10 }

ccCopyTimeStarted OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Specifies the time the ccCopyState last
        transitioned to 'running', or 0 if the state has 
        never transitioned to 'running'(e.g., stuck in
        'waiting' state).

        This object is instantiated only after the row has 
        been instantiated." 
    ::= { ccCopyEntry 11 }

ccCopyTimeCompleted OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Specifies the time the ccCopyState last
        transitioned from 'running' to 'successful' or 
        'failed' states. This object is instantiated only 
        after the row has been instantiated.
        Its value will remain 0 until the request has 
        completed." 
    ::= { ccCopyEntry 12 }

ccCopyFailCause OBJECT-TYPE
    SYNTAX          ConfigCopyFailCause
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The reason why the config-copy operation failed.
        This object is instantiated only when the 
        ccCopyState for this entry is in the 
        'failed' state." 
    ::= { ccCopyEntry 13 }

ccCopyEntryRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The status of this table entry. Once the entry
        status is set to active, the associated entry cannot 
        be modified until the request completes 
        (ccCopyState transitions to 'successful'
        or 'failed' state)." 
    ::= { ccCopyEntry 14 }

ccCopyServerAddressType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object indicates the transport type of the
        address contained in ccCopyServerAddressRev1 object.

        This must be created when either the
        ccCopySourceFileType or ccCopyDestFileType has the
        value 'networkFile'." 
    ::= { ccCopyEntry 15 }

ccCopyServerAddressRev1 OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The IP address of the TFTP server from (or to)
        which to copy the configuration file. This object
        must be created when either the 
        ccCopySourceFileType or ccCopyDestFileType has the
        value 'networkFile'.  

        All bits as 0s or 1s for ccCopyServerAddressRev1 are
        not allowed.

        The format of this address depends on the value of 
        the ccCopyServerAddressType object." 
    ::= { ccCopyEntry 16 }
 


ccCopyErrorTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CcCopyErrorEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table containing information about the failure
        cause of the config copy operation. An entry is
        created only when the value of ccCopyState changes
        to 'failed' for a config copy operation.

        Not all combinations of ccCopySourceFileType and
        ccCopyDestFileType need to be supported.  For
        example, an implementation may choose to support
        only the following combination:
        ccCopySourceFileType = 'runningConfig'
        ccCopyDestFileType = 'fabricStartupConfig'. 

        In the case where a fabric wide config copy 
        operation is being performed, for example by
        selecting ccCopyDestFileType value to be
        'fabricStartupConfig', it is possible that the
        fabric could have more than one device. In such
        cases this table would have one entry for each
        device in the fabric. In this case even if the 
        operation succeeded in one device and failed in 
        another, the operation as such has failed, so the
        global state  represented by ccCopyState 'failed',
        but for the device on which it was success, 
        ccCopyErrorDescription would have the 
        distinguished value, 'success'. 

        Once the config copy operation completes and if an
        entry gets instantiated, the management station 
        should retrieve the values of the status objects of 
        interest. Once an entry in ccCopyTable is deleted
        by management station, all the corresponding entries
        with the same ccCopyIndex in this table are also 
        deleted. 

        In order to prevent old entries from clogging the 
        table, entries age out at the same time as the 
        corresponding entry with same ccCopyIndex in 
        ccCopyTable ages out."
    ::= { ccCopy 2 }

ccCopyErrorEntry OBJECT-TYPE
    SYNTAX          CcCopyErrorEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing information about the
        outcome at one destination of a failed config
        copy operation."
    INDEX           {
                        ccCopyIndex,
                        ccCopyErrorIndex
                    } 
    ::= { ccCopyErrorTable 1 }

CcCopyErrorEntry ::= SEQUENCE {
        ccCopyErrorIndex               Unsigned32,
        ccCopyErrorDeviceIpAddressType InetAddressType,
        ccCopyErrorDeviceIpAddress     InetAddress,
        ccCopyErrorDeviceWWN           FcNameIdOrZero,
        ccCopyErrorDescription         SnmpAdminString
}

ccCopyErrorIndex OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A monotonically increasing integer for the sole
        purpose of indexing entries in this table.
        When a config copy operation has multiple 
        destinations, then this index value is used to 
        distinguish between those multiple destinations." 
    ::= { ccCopyErrorEntry 1 }

ccCopyErrorDeviceIpAddressType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The type of Internet address for this destination
        device on which config copy operation is performed." 
    ::= { ccCopyErrorEntry 2 }

ccCopyErrorDeviceIpAddress OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The IP address of this destination device on which
        config copy operation is performed.
        The object value has to be consistent with the type
        specified in ccCopyErrorDeviceIpAddressType." 
    ::= { ccCopyErrorEntry 3 }

ccCopyErrorDeviceWWN OBJECT-TYPE
    SYNTAX          FcNameIdOrZero
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The World Wide Name (WWN) of this destination
        device on which config copy operation is performed.
        The value of this object is zero-length string if 
        WWN is unassigned or unknown. For example, devices 
        which do not support fibre channel would not
        have WWN." 
    ::= { ccCopyErrorEntry 4 }

ccCopyErrorDescription OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The error description for the error happened
        for this destination of this config copy 
        operation." 
    ::= { ccCopyErrorEntry 5 }
 

ciscoConfigCopyMIBTrapPrefix  OBJECT IDENTIFIER
    ::= { ciscoConfigCopyMIB 2 }

ccCopyMIBTraps  OBJECT IDENTIFIER
    ::= { ciscoConfigCopyMIBTrapPrefix 1 }


ccCopyCompletion NOTIFICATION-TYPE
    OBJECTS         {
                        ccCopyServerAddress,
                        ccCopyFileName,
                        ccCopyState,
                        ccCopyTimeStarted,
                        ccCopyTimeCompleted,
                        ccCopyFailCause
                    }
    STATUS          current
    DESCRIPTION
        "A ccCopyCompletion trap is sent at the completion
        of a config-copy request. The ccCopyFailCause is not
        instantiated, and hence not included in a trap, when 
        the ccCopyState is success."
   ::= { ccCopyMIBTraps 1 }
ciscoConfigCopyMIBConformance  OBJECT IDENTIFIER
    ::= { ciscoConfigCopyMIB 3 }

ccCopyMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoConfigCopyMIBConformance 1 }

ccCopyMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoConfigCopyMIBConformance 2 }


ccCopyMIBCompliance MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
        "The compliance statement for Cisco agents which
        implement the Cisco ConfigCopy MIB. This MIB should 
        be implemented on all Cisco agents that support 
        copying of configs via the CLI.

        This compliance is deprecated and new compliance
        ccCopyMIBComplianceRev1 is defined."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ccCopyGroup,
                        ccCopyNotificationsGroup
                    }
    ::= { ccCopyMIBCompliances 1 }

ccCopyMIBComplianceRev1 MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
        "The compliance statement for Cisco agents which
        implement the Cisco ConfigCopy MIB. This MIB should 
        be implemented on all Cisco agents that support 
        copying of configs via the CLI.

        This compliance module deprecates
        ccCopyMIBCompliance."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ccCopyGroupRev1,
                        ccCopyNotificationsGroup
                    }
    ::= { ccCopyMIBCompliances 2 }

ccCopyMIBComplianceRev2 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for Cisco agents which
        implement the Cisco ConfigCopy MIB. This MIB should 
        be implemented on all Cisco agents that support 
        copying of configs via the CLI.

        This compliance module deprecates
        ccCopyMIBComplianceRev1."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ccCopyGroupRev1,
                        ccCopyNotificationsGroup
                    }

    GROUP           ccCopyErrorGroup
    DESCRIPTION
        "Implementation of this group is optional."
    ::= { ccCopyMIBCompliances 3 }

-- units of conformance

ccCopyGroup OBJECT-GROUP
    OBJECTS         {
                        ccCopyProtocol,
                        ccCopySourceFileType,
                        ccCopyDestFileType,
                        ccCopyServerAddress,
                        ccCopyFileName,
                        ccCopyUserName,
                        ccCopyUserPassword,
                        ccCopyNotificationOnCompletion,
                        ccCopyState,
                        ccCopyTimeStarted,
                        ccCopyTimeCompleted,
                        ccCopyFailCause,
                        ccCopyEntryRowStatus
                    }
    STATUS          deprecated
    DESCRIPTION
        "A collection of objects providing the ability to
        copy an agent-configuration file.

        This Group is deprecated and new group is defined."
    ::= { ccCopyMIBGroups 1 }

ccCopyNotificationsGroup NOTIFICATION-GROUP
   NOTIFICATIONS    { ccCopyCompletion }
    STATUS          current
    DESCRIPTION
        "The notification used to indicate that a config-copy
        operation to or from the agent has been completed."
    ::= { ccCopyMIBGroups 2 }

ccCopyGroupRev1 OBJECT-GROUP
    OBJECTS         {
                        ccCopyProtocol,
                        ccCopySourceFileType,
                        ccCopyDestFileType,
                        ccCopyServerAddressType,
                        ccCopyServerAddressRev1,
                        ccCopyFileName,
                        ccCopyUserName,
                        ccCopyUserPassword,
                        ccCopyNotificationOnCompletion,
                        ccCopyState,
                        ccCopyTimeStarted,
                        ccCopyTimeCompleted,
                        ccCopyFailCause,
                        ccCopyEntryRowStatus
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing the ability to
        copy an agent-configuration file.

        This group deprecates the old group ccCopyGroup."
    ::= { ccCopyMIBGroups 3 }

ccCopyErrorGroup OBJECT-GROUP
    OBJECTS         {
                        ccCopyErrorDeviceIpAddressType,
                        ccCopyErrorDeviceIpAddress,
                        ccCopyErrorDeviceWWN,
                        ccCopyErrorDescription
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing the result
        of a config copy operation when the value of
        ccCopyDestFileType is 'fabricStartupConfig' and 
        value of ccCopyState is 'failed'."
    ::= { ccCopyMIBGroups 4 }

END